1. Field of the Invention
The invention generally relates to improving performance and scalability in web-enabled applications, and, specifically, to the use of an in-line network device for storing application-layer data, instructions, and/or rule sets.
2. Description of Background Art
On the World Wide Web (i.e. the “web”), it is frequently desirable to store application-layer data and/or programming instructions for web-based applications. For example, many applications need to maintain application data to retain state relating to previous interactions with that same client. For example, a user may indicate certain preferences regarding the display of a particular website, and it may be desirable to associate those preferences with the user computer for future visits.
However, standard mechanisms for storing such data provide only a very limited capability and do not scale well as multiple web servers are added to handle increased traffic. Certain methods, such as cookies, create scalability and performance issues and also can raise privacy and security concerns. Such cookies are also subject to limitations in size and quantity.
Other techniques for storing data on the user computer include ASP.NET ViewState, hidden form fields, and URL query strings. However, all of these techniques require extensive communication of data (and in some cases instructions) between servers and client computers, creating performance and scalability issues.
Such techniques often provide no efficient, scalable, generalized, secure method of storing data, or for transmitting such information between client and server. Furthermore, such techniques are often inefficient when used in the context of a load-balanced multiple-server environment. Data transmitted from a client to one of the servers in the multiple-server environment, and stored on the designated server, may not be easily retrievable by other servers. This forces subsequent requests to be directed to the same server, even when load conditions may have changed, causing another server to have greater availability of capacity. This static association between a user computer and a web server reduces the effectiveness of load balancing. Load balancing techniques have difficulty assigning page requests to web servers evenly when a large portion of incoming page requests must necessarily be assigned to a specific web server.
Application data can be stored in a server external to the web server. However, storing application data external to the web server introduces several extra steps. In order to process a request, the web server must receive the request, determine the need for application data, request the application data from the external server, wait for a response, process that response, write the updated application data back to the external state server, and finally return the web request. These extra steps introduce delay, complexity, and the potential for failure.
What is needed is a method for effectively embedding application-layer data in standard network messages between clients and servers, in a manner that supports redundancy and is compatible with load-balancing techniques, and without adding unnecessary complexity or steps to the method of the web server.